/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package kitaplaner.application;

import java.sql.Connection;
import java.sql.Date;
import java.util.ArrayList;
import kitaplaner.database.*;

/**
 *
 * @author yves
 */
public class DienstplanerApp {
    private GruppenApp grpApp;
    private MitarbeiterApp mApp;
    private Connection conn;
    private SchichtEintragApp schichtEintragApp;
    
    public DienstplanerApp(Kita kita, Connection conn)
    {
        this.conn = conn;
        grpApp = new GruppenApp(kita, conn);
        mApp = new MitarbeiterApp(kita, conn);

    }
    
    /*
     * initialisiert den Dienstplan für ein Jahr
     */
    public void initSchedule()
    {
        System.out.println("Initialisiere Dienstplan!");
    }
    
    public ArrayList loadSchedule(int kw, String gruppe)
    {
        System.out.println(kw + gruppe);
        return null;
    }
    
        /*
     * Erzeugt einen Plan auf Zeitbasis X
     */
    public void createPlan(int GruppenID, Date day)
    {
        SchichtEintrag neuerEintrag = new SchichtEintrag();
        
        // Hol Parameter für die Regelerstellung zur Plannung der Schicht
        System.out.println("creating the plan schedule for "+ day + " and group " + grpApp.getGrpNameById(GruppenID));
        ArrayList<Mitarbeiter> maListe = mApp.getMitarbeiterByGroup(GruppenID);
        
        
        for (int i = 0; i < maListe.size(); i++) {
            System.out.println(maListe.get(i).getVorname());
        }
        
        
        // 1. MA mit größter DIV raussuchen
        Mitarbeiter maDiv = this.getMAByDiv(maListe);
        
        // 2. Trage MA in Längste Schicht ein
        Schicht längsteSchicht = this.getSchichtByLength(GruppenID);
        
        // 3. Pausen und Vorbereitungszeit berechnen/einteilen
                
        // 4. Prüfe ob sanity checks erfüllt sind (MA minimum, pausen, vb, kein zu starker penalty)
        
        // 5. neuen Eintrag in die Datenbank schreiben
        
        schichtEintragApp.insertDayTask(day, GruppenID, maDiv.getId(), längsteSchicht.getStart(), längsteSchicht.getEnd(), null, null, null, null); 
//        SchichtEintrag schichtEintrag = new SchichtEintrag();
//        
//        schichtEintrag.setDatum(day);
//        schichtEintrag.setGruppenID(6);
//        schichtEintrag.setMitarbeiterID(7);
//        schichtEintrag.setStartZeit(new Time(8,0,0));
//        schichtEintrag.setEndZeit(new Time(8,0,0));
//        schichtEintrag.setPauseStart(new Time(8,0,0));
//        schichtEintrag.setPauseEnde(new Time(8,0,0));
//        schichtEintrag.setVbStart(new Time(8,0,0));
//        schichtEintrag.setVbEnde(new Time(8,0,0));
//        
//        schichtEintrag.save(schichtEintrag);

    }
    
    public SchichtEintrag planDay()
    {
        return null;
    }
    
    public ArrayList<SchichtEintrag> planWeek(int kw, int gruppenID)
    {
        return null;
    }
    
    public Mitarbeiter getMAByDiv(ArrayList<Mitarbeiter> mitarbeiterListe)
    {
        return null;
    }
    
    public Schicht getSchichtByLength(int gruppenID)
    {
        return null;
    }
}
